import { defineConfig } from 'vite';
import vue from '@vitejs/plugin-vue';
import vueJsx from '@vitejs/plugin-vue-jsx';
import legacy from '@vitejs/plugin-legacy';
import { resolve } from 'node:path';

// https://vitejs.dev/config/
export default defineConfig({
  plugins: [vue(), legacy(), vueJsx()],
  base: './',
  resolve: {
    alias: {
      '@': resolve(__dirname, './src'),
      '@com': resolve(__dirname, './src/components'),
      '@u': resolve(__dirname, './src/utils'),
    },
  },
  server: {
    open: false, //项目运行后是否自动打开页码
    port: 8088,
    hmr: true, //热更新
    host: '0.0.0.0',
    //设为 true 时若端口已被占用则会直接退出，而不是尝试下一个可用端口
    strictPort: false,
    proxy: {
      '/api': {
        target: 'http://192.168.1.144:3000',
        changeOrigin: true, //开启代理，允许跨域请求
        rewrite: (path) => path.replace(/^\/api/, 'api'),
      },
      // '/api': {
      //   target: 'http://oa.gdtianheng.com/api',
      //   changeOrigin: true, //开启代理，允许跨域请求
      //   rewrite: (path) => path.replace(/^\/api/, ''),
      // },
    },
  },
  build: {
    outDir: 'dist', // 指定输出路径
    assetsDir: 'assets', // 指定生成静态文件目录
    target: 'esnext', // 设置最终构建的浏览器兼容目标
    minify: 'terser', // 必须开启：使用terserOptions才有效果
    terserOptions: {
      compress: {
        //生产环境时移除console
        drop_console: true,
        drop_debugger: true,
      },
    },
    sourcemap: true, // 生成源映射文件
    rollupOptions: {
      input: {
        main: './index.html', // 主入口文件
      },
      // output: {
      //   entryFileNames: '[name]/main.js', // 输出文件名
      //   chunkFileNames: '[name].js', // 分包文件名
      //   assetFileNames: '[name].[ext]', // 资源文件名
      // },
      //打包排除server目录文件
      external: [resolve(__dirname, 'server/**/*')],
    },
  },
});
